{extend name="public/base"/}
{block name="body"}
<div class="main-box clearfix">
	<header class="main-box-header clearfix">
		<!-- 标题栏 -->
		<div class="pull-left">
			<h2>数据备份</h2>
		</div>
		<div class="pull-right">
			<a id="export" class="btn btn-primary" href="javascript:;" autocomplete="off">立即备份</a>
			<a id="optimize" class="btn btn-success" href="{:url('optimize')}">优化表</a>
			<a id="repair" class="btn btn-warning" href="{:url('repair')}">修复表</a>
		</div>
	</header>
	<div class="main-box-body clearfix">
		<form id="export-form" method="post" action="{:url('export')}">
        <div class="table-responsive clearfix">
			<table class="table table-striped">
				<thead>
					<tr>
						<th width="48">
							<input class="check-all" checked="chedked" type="checkbox" value=""></th>
						<th>表名</th>
						<th width="120">数据量</th>
						<th width="120">数据大小</th>
						<th width="180">创建时间</th>
						<th width="160">备份状态</th>
						<th width="120">操作</th>
					</tr>
				</thead>
				<tbody>
					{volist name="list" id="table"}
					<tr>
						<td class="num">
							<input class="ids" checked="chedked" type="checkbox" name="tables[]" value="{$table.name}"></td>
						<td>{$table.name}</td>
						<td>{$table.rows}</td>
						<td>{$table.data_length|format_bytes}</td>
						<td>{$table.create_time}</td>
						<td class="info">未备份</td>
						<td class="action">
							<a class="ajax-get no-refresh" href="{:url('optimize?tables='.$table['name'])}">优化表</a>
							&nbsp;
							<a class="ajax-get no-refresh" href="{:url('repair?tables='.$table['name'])}">修复表</a>
						</td>
					</tr>
					{/volist}
				</tbody>
			</table>
        </div>
		</form>
	</div>
</div>
{/block}

{block name="script"}
<script type="text/javascript">
(function($){
    var $form = $("#export-form"), $export = $("#export"), tables
        $optimize = $("#optimize"), $repair = $("#repair");

    $optimize.add($repair).click(function(){
        $.post(this.href, $form.serialize(), function(data){
            if(data.code){
                updateAlert(data.msg,'alert-success');
            } else {
                updateAlert(data.msg,'alert-error');
            }
            setTimeout(function(){
                $('#top-alert').find('button').click();
                $(that).removeClass('disabled').prop('disabled',false);
            },1500);
        }, "json");
        return false;
    });

    $export.click(function(){
        $export.parent().children().addClass("disabled");
        $export.html("正在发送备份请求...");
        $.post(
            $form.attr("action"),
            $form.serialize(),
            function(data){
                if(data.code){
                    tables = data.data.tables;
                    $export.html(data.msg + "开始备份，请不要关闭本页面！");
                    backup(data.data.tab);
                    window.onbeforeunload = function(){ return "正在备份数据库，请不要关闭！" }
                } else {
                    updateAlert(data.msg,'alert-error');
                    $export.parent().children().removeClass("disabled");
                    $export.html("立即备份");
                    setTimeout(function(){
    	                $('#top-alert').find('button').click();
    	                $(that).removeClass('disabled').prop('disabled',false);
    	            },1500);
                }
            },
            "json"
        );
        return false;
    });

    function backup(tab, status){
        status && showmsg(tab.id, "开始备份...(0%)");
        $.get($form.attr("action"), tab, function(data){
            if(data.code){
                var info = data.data;
                showmsg(tab.id, data.msg);

                if(!$.isPlainObject(info.tab)){
                    $export.parent().children().removeClass("disabled");
                    $export.html("备份完成，点击重新备份");
                    window.onbeforeunload = function(){ return null }
                    return;
                }
                backup(info.tab, tab.id != info.tab.id);
            } else {
                updateAlert(data.msg,'alert-error');
                $export.parent().children().removeClass("disabled");
                $export.html("立即备份");
                setTimeout(function(){
	                $('#top-alert').find('button').click();
	                $(that).removeClass('disabled').prop('disabled',false);
	            },1500);
            }
        }, "json");

    }

    function showmsg(id, msg){
        $form.find("input[value=" + tables[id] + "]").closest("tr").find(".info").html(msg);
    }
})(jQuery);
</script>
{/block}